using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._UtilityNetworkTools._TraceConfiguration
{
    /// <summary>
    /// <para>Add Trace Configuration</para>
    /// <para>Creates a named trace configuration in the utility network.</para>
    /// <para>在公共设施网络中创建命名追踪配置。</para>
    /// </summary>    
    [DisplayName("Add Trace Configuration")]
    public class AddTraceConfiguration : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public AddTraceConfiguration()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_utility_network">
        /// <para>Input Utility Network</para>
        /// <para>The utility network that will contain the new named trace configuration.</para>
        /// <para>将包含新命名追踪配置的公共设施网络。</para>
        /// </param>
        /// <param name="_trace_config_name">
        /// <para>Trace Configuration Name</para>
        /// <para>The name for the named trace configuration.</para>
        /// <para>命名跟踪配置的名称。</para>
        /// </param>
        /// <param name="_trace_type">
        /// <para>Trace Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of trace that will be configured.</para>
        ///   <bulletList>
        ///     <bullet_item>Connected— A connected trace that begins at one or more starting points and spans outward along connected features will be used. This is the default.</bullet_item><para/>
        ///     <bullet_item>Subnetwork— A subnetwork trace that begins at one or more starting points and spans outward to encompass the extent of the subnetwork will be used.</bullet_item><para/>
        ///     <bullet_item>Subnetwork controllers—A subnetwork controllers trace that locates sources and sinks on subnetwork controllers associated with a subnetwork will be used.</bullet_item><para/>
        ///     <bullet_item>Upstream—An upstream trace that discovers features upstream from a location in the network will be used.</bullet_item><para/>
        ///     <bullet_item>Downstream—A downstream trace that discovers features downstream from a location in the network will be used.</bullet_item><para/>
        ///     <bullet_item>Loops— Loops are areas of the network where flow direction is ambiguous. A loops trace that spans outward from the starting point based on connectivity will be used.</bullet_item><para/>
        ///     <bullet_item>Shortest path—A shortest path trace that identifies the shortest path between two starting points will be used.</bullet_item><para/>
        ///     <bullet_item>Isolation—An isolation trace that discovers features that isolate an area of a network will be used.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定将要配置的跟踪类型。</para>
        ///   <bulletList>
        ///     <bullet_item>连接- 将使用从一个或多个起点开始并沿连接要素向外延伸的连接追踪。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>子网- 将使用从一个或多个起点开始并向外扩展以包含子网范围的子网追踪。</bullet_item><para/>
        ///     <bullet_item>子网控制器 - 将使用子网控制器追踪，用于定位与子网关联的子网控制器上的源和接收器。</bullet_item><para/>
        ///     <bullet_item>上游—将使用从网络中某个位置发现上游要素的上游追踪。</bullet_item><para/>
        ///     <bullet_item>下游 - 将使用下游追踪，用于发现网络中某个位置下游的要素。</bullet_item><para/>
        ///     <bullet_item>环路 — 环路是网络中流动方向不明确的区域。将使用基于连通性从起点向外跨越的环路轨迹。</bullet_item><para/>
        ///     <bullet_item>最短路径—将使用标识两个起点之间的最短路径的最短路径追踪。</bullet_item><para/>
        ///     <bullet_item>隔离—将使用隔离网络区域的要素的隔离追踪。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public AddTraceConfiguration(object _in_utility_network, object _trace_config_name, _trace_type_value _trace_type)
        {
            this._in_utility_network = _in_utility_network;
            this._trace_config_name = _trace_config_name;
            this._trace_type = _trace_type;
        }
        public override string ToolboxName => "Utility Network Tools";

        public override string ToolName => "Add Trace Configuration";

        public override string CallName => "un.AddTraceConfiguration";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_utility_network, _trace_config_name, _trace_type.GetGPValue(), _description, _tags, _domain_network, _tier, _target_tier, _subnetwork_name, _shortest_path_network_attribute_name, _include_containers.GetGPValue(), _include_content.GetGPValue(), _include_structures.GetGPValue(), _include_barriers.GetGPValue(), _validate_consistency.GetGPValue(), _condition_barriers, _function_barriers, _traversability_scope.GetGPValue(), _filter_barriers, _filter_function_barriers, _filter_scope.GetGPValue(), _filter_bitset_network_attribute_name, _filter_nearest.GetGPValue(), _nearest_count, _nearest_cost_network_attribute, _nearest_categories, _nearest_assets, _functions, _propagators, _output_assettypes, _output_conditions, _out_utility_network, _include_isolated_features.GetGPValue(), _ignore_barriers_at_starting_points.GetGPValue(), _include_up_to_first_spatial_container.GetGPValue(), _result_types, _allow_indeterminate_flow.GetGPValue(), _validate_locatability.GetGPValue()];

        /// <summary>
        /// <para>Input Utility Network</para>
        /// <para>The utility network that will contain the new named trace configuration.</para>
        /// <para>将包含新命名追踪配置的公共设施网络。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Utility Network")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_utility_network { get; set; }


        /// <summary>
        /// <para>Trace Configuration Name</para>
        /// <para>The name for the named trace configuration.</para>
        /// <para>命名跟踪配置的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Trace Configuration Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _trace_config_name { get; set; }


        /// <summary>
        /// <para>Trace Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of trace that will be configured.</para>
        ///   <bulletList>
        ///     <bullet_item>Connected— A connected trace that begins at one or more starting points and spans outward along connected features will be used. This is the default.</bullet_item><para/>
        ///     <bullet_item>Subnetwork— A subnetwork trace that begins at one or more starting points and spans outward to encompass the extent of the subnetwork will be used.</bullet_item><para/>
        ///     <bullet_item>Subnetwork controllers—A subnetwork controllers trace that locates sources and sinks on subnetwork controllers associated with a subnetwork will be used.</bullet_item><para/>
        ///     <bullet_item>Upstream—An upstream trace that discovers features upstream from a location in the network will be used.</bullet_item><para/>
        ///     <bullet_item>Downstream—A downstream trace that discovers features downstream from a location in the network will be used.</bullet_item><para/>
        ///     <bullet_item>Loops— Loops are areas of the network where flow direction is ambiguous. A loops trace that spans outward from the starting point based on connectivity will be used.</bullet_item><para/>
        ///     <bullet_item>Shortest path—A shortest path trace that identifies the shortest path between two starting points will be used.</bullet_item><para/>
        ///     <bullet_item>Isolation—An isolation trace that discovers features that isolate an area of a network will be used.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定将要配置的跟踪类型。</para>
        ///   <bulletList>
        ///     <bullet_item>连接- 将使用从一个或多个起点开始并沿连接要素向外延伸的连接追踪。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>子网- 将使用从一个或多个起点开始并向外扩展以包含子网范围的子网追踪。</bullet_item><para/>
        ///     <bullet_item>子网控制器 - 将使用子网控制器追踪，用于定位与子网关联的子网控制器上的源和接收器。</bullet_item><para/>
        ///     <bullet_item>上游—将使用从网络中某个位置发现上游要素的上游追踪。</bullet_item><para/>
        ///     <bullet_item>下游 - 将使用下游追踪，用于发现网络中某个位置下游的要素。</bullet_item><para/>
        ///     <bullet_item>环路 — 环路是网络中流动方向不明确的区域。将使用基于连通性从起点向外跨越的环路轨迹。</bullet_item><para/>
        ///     <bullet_item>最短路径—将使用标识两个起点之间的最短路径的最短路径追踪。</bullet_item><para/>
        ///     <bullet_item>隔离—将使用隔离网络区域的要素的隔离追踪。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Trace Type")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _trace_type_value _trace_type { get; set; }

        public enum _trace_type_value
        {
            /// <summary>
            /// <para>Connected</para>
            /// <para>Connected— A connected trace that begins at one or more starting points and spans outward along connected features will be used. This is the default.</para>
            /// <para>连接- 将使用从一个或多个起点开始并沿连接要素向外延伸的连接追踪。这是默认设置。</para>
            /// </summary>
            [Description("Connected")]
            [GPEnumValue("CONNECTED")]
            _CONNECTED,

            /// <summary>
            /// <para>Subnetwork</para>
            /// <para>Subnetwork— A subnetwork trace that begins at one or more starting points and spans outward to encompass the extent of the subnetwork will be used.</para>
            /// <para>子网- 将使用从一个或多个起点开始并向外扩展以包含子网范围的子网追踪。</para>
            /// </summary>
            [Description("Subnetwork")]
            [GPEnumValue("SUBNETWORK")]
            _SUBNETWORK,

            /// <summary>
            /// <para>Subnetwork controllers</para>
            /// <para>Subnetwork controllers—A subnetwork controllers trace that locates sources and sinks on subnetwork controllers associated with a subnetwork will be used.</para>
            /// <para>子网控制器 - 将使用子网控制器追踪，用于定位与子网关联的子网控制器上的源和接收器。</para>
            /// </summary>
            [Description("Subnetwork controllers")]
            [GPEnumValue("SUBNETWORK_CONTROLLERS")]
            _SUBNETWORK_CONTROLLERS,

            /// <summary>
            /// <para>Upstream</para>
            /// <para>Upstream—An upstream trace that discovers features upstream from a location in the network will be used.</para>
            /// <para>上游—将使用从网络中某个位置发现上游要素的上游追踪。</para>
            /// </summary>
            [Description("Upstream")]
            [GPEnumValue("UPSTREAM")]
            _UPSTREAM,

            /// <summary>
            /// <para>Downstream</para>
            /// <para>Downstream—A downstream trace that discovers features downstream from a location in the network will be used.</para>
            /// <para>下游 - 将使用下游追踪，用于发现网络中某个位置下游的要素。</para>
            /// </summary>
            [Description("Downstream")]
            [GPEnumValue("DOWNSTREAM")]
            _DOWNSTREAM,

            /// <summary>
            /// <para>Loops</para>
            /// <para>Loops— Loops are areas of the network where flow direction is ambiguous. A loops trace that spans outward from the starting point based on connectivity will be used.</para>
            /// <para>环路 — 环路是网络中流动方向不明确的区域。将使用基于连通性从起点向外跨越的环路轨迹。</para>
            /// </summary>
            [Description("Loops")]
            [GPEnumValue("LOOPS")]
            _LOOPS,

            /// <summary>
            /// <para>Shortest path</para>
            /// <para>Shortest path—A shortest path trace that identifies the shortest path between two starting points will be used.</para>
            /// <para>最短路径—将使用标识两个起点之间的最短路径的最短路径追踪。</para>
            /// </summary>
            [Description("Shortest path")]
            [GPEnumValue("SHORTEST_PATH")]
            _SHORTEST_PATH,

            /// <summary>
            /// <para>Isolation</para>
            /// <para>Isolation—An isolation trace that discovers features that isolate an area of a network will be used.</para>
            /// <para>隔离—将使用隔离网络区域的要素的隔离追踪。</para>
            /// </summary>
            [Description("Isolation")]
            [GPEnumValue("ISOLATION")]
            _ISOLATION,

        }

        /// <summary>
        /// <para>Description</para>
        /// <para>The description of the named trace configuration.</para>
        /// <para>命名跟踪配置的说明。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Description")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _description { get; set; } = null;


        /// <summary>
        /// <para>Tags</para>
        /// <para>A set of tags used to identify the named trace configuration. The tags can be used in search and indexing.</para>
        /// <para>一组用于标识命名跟踪配置的标记。这些标记可用于搜索和索引。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Tags")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _tags { get; set; } = null;


        /// <summary>
        /// <para>Domain Network</para>
        /// <para>The name of the domain network where the trace will be run. This parameter is required when running the subnetwork, subnetwork controllers, upstream, and downstream trace types.</para>
        /// <para>将在其中运行跟踪的域网络的名称。在运行子网、子网控制器、上游和下游追踪类型时，此参数是必需的。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Domain Network")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _domain_network { get; set; } = null;


        /// <summary>
        /// <para>Tier</para>
        /// <para>The name of the tier to start the trace. This parameter is required when running the subnetwork, subnetwork controllers, upstream, and downstream trace types.</para>
        /// <para>要启动跟踪的层的名称。在运行子网、子网控制器、上游和下游追踪类型时，此参数是必需的。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Tier")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _tier { get; set; } = null;


        /// <summary>
        /// <para>Target Tier</para>
        /// <para>The name of the target tier to which the input tier flows. If this parameter is missing for upstream and downstream traces, those traces will stop when they reach the boundary of the starting subnetwork. This parameter can be used to allow these traces to continue either farther up or farther down the hierarchy.</para>
        /// <para>输入层流向的目标层的名称。如果上游和下游追踪缺少此参数，则这些追踪将在到达起始子网的边界时停止。此参数可用于允许这些跟踪在层次结构中继续向上或向下延伸。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Tier")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _target_tier { get; set; } = null;


        /// <summary>
        /// <para>Subnetwork Name</para>
        /// <para>The name of the subnetwork where the trace will be run. This parameter can be used when running a subnetwork trace type. If a subnetwork name is specified, the Starting Points parameter (starting_points in Python) is not required.</para>
        /// <para>将在其中运行跟踪的子网的名称。运行子网追踪类型时可以使用此参数。如果指定了子网名称，则不需要起点参数（在 Python 中为 starting_points）。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Subnetwork Name")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _subnetwork_name { get; set; } = null;


        /// <summary>
        /// <para>Shortest Path Network Attribute Name</para>
        /// <para>The name of the network attribute used to calculate the shortest path. When running a shortest path trace type, the shortest path is calculated using a numeric network attribute such as shape length. Cost and distance based paths can both be achieved. This parameter is required when running a shortest path trace.</para>
        /// <para>用于计算最短路径的网络属性的名称。运行最短路径追踪类型时，将使用数字网络属性（如形状长度）计算最短路径。基于成本和距离的路径都可以实现。运行最短路径跟踪时，此参数是必需的。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Shortest Path Network Attribute Name")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _shortest_path_network_attribute_name { get; set; } = null;


        /// <summary>
        /// <para>Include Containers</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the container features will be included in the trace results.
        ///   <bulletList>
        ///     <bullet_item>Checked—Container features will be included in the trace results. The Include up to First Spatial Container parameter becomes active.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Container features will not be included in the trace results. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定容器功能是否将包含在跟踪结果中。
        ///   <bulletList>
        ///     <bullet_item>选中 - 容器要素将包含在追踪结果中。最多包括第一个空间容器参数变为活动状态。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪结果中将不包括容器要素。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Containers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_containers_value _include_containers { get; set; } = _include_containers_value._false;

        public enum _include_containers_value
        {
            /// <summary>
            /// <para>INCLUDE_CONTAINERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_CONTAINERS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_CONTAINERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_CONTAINERS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Include Content</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the trace will return content in containers in the results.
        ///   <bulletList>
        ///     <bullet_item>Checked—Content in container features will be included in the trace results.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Content in container features will not be included in the trace results. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定跟踪是否将在结果中返回容器中的内容。
        ///   <bulletList>
        ///     <bullet_item>选中 - 容器要素中的内容将包含在追踪结果中。</bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪结果中不会包括容器要素中的内容。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Content")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_content_value _include_content { get; set; } = _include_content_value._false;

        public enum _include_content_value
        {
            /// <summary>
            /// <para>INCLUDE_CONTENT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_CONTENT")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_CONTENT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_CONTENT")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Include Structures</para>
        /// <para><xdoc>
        ///   <para>Specifies whether structure features and objects will be included in the trace results.
        ///   <bulletList>
        ///     <bullet_item>Checked—Structure features and objects will be included in the trace results.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Structure features and objects will not be included in the trace results. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否将结构特征和对象包含在跟踪结果中。
        ///   <bulletList>
        ///     <bullet_item>选中 - 结构特征和对象将包含在追踪结果中。</bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪结果中不会包括结构特征和对象。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Structures")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_structures_value _include_structures { get; set; } = _include_structures_value._false;

        public enum _include_structures_value
        {
            /// <summary>
            /// <para>INCLUDE_STRUCTURES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_STRUCTURES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_STRUCTURES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_STRUCTURES")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Include Barrier Features</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the traversability barrier features will be included in the trace results. Traversability barriers are optional even if they have been preset in the subnetwork definition. This parameter does not apply to device features with terminals.
        ///   <bulletList>
        ///     <bullet_item>Checked—Traversability barrier features will be included in the trace results. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Traversability barrier features will not be included in the trace results.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定追踪结果中是否包括可遍历性障碍要素。可遍历性障碍是可选的，即使它们已在子网定义中预设。此参数不适用于带终端的设备功能。
        ///   <bulletList>
        ///     <bullet_item>选中 - 可穿越性障碍要素将包含在追踪结果中。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪结果中不会包括可穿越性障碍要素。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Barrier Features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_barriers_value _include_barriers { get; set; } = _include_barriers_value._true;

        public enum _include_barriers_value
        {
            /// <summary>
            /// <para>INCLUDE_BARRIERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_BARRIERS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_BARRIERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_BARRIERS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Validate Consistency</para>
        /// <para><xdoc>
        ///   <para>Specifies whether an error will be returned if dirty areas are encountered in any of the traversed features. This is the only way to guarantee a trace is passing through features with consistent status in the network. To remove dirty areas, validate the network topology.
        ///   <bulletList>
        ///     <bullet_item>Checked—The trace will return an error if dirty areas are encountered in any of the traversed features. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The trace will return results regardless of whether dirty areas are encountered in any of the traversed features.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定在任何遍历要素中遇到脏区时是否返回错误。这是保证跟踪通过网络中状态一致的特征的唯一方法。若要删除脏区，请验证网络拓扑。
        ///   <bulletList>
        ///     <bullet_item>选中 - 如果在任何穿越的要素中遇到脏区，则追踪将返回错误。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 无论在任何穿越要素中是否遇到脏区，追踪都将返回结果。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Validate Consistency")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _validate_consistency_value _validate_consistency { get; set; } = _validate_consistency_value._true;

        public enum _validate_consistency_value
        {
            /// <summary>
            /// <para>VALIDATE_CONSISTENCY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("VALIDATE_CONSISTENCY")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_VALIDATE_CONSISTENCY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_VALIDATE_CONSISTENCY")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Condition Barriers</para>
        /// <para><xdoc>
        ///   <para>Sets a traversability barrier condition on features based on a comparison to a network attribute or check for a category string. A condition barrier uses a network attribute, an operator and a type, and an attribute value. For example, stop a trace when a feature has the Device Status attribute equal to the specific value of Open. When a feature meets this condition, the trace stops. If you're using more than one attribute, you can use the Combine using parameter to define an And or an Or condition.</para>
        ///   <para>Condition barrier components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Name—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Type—Choose a specific value or network attribute from the value that is specified in the Name parameter.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that would cause termination based on the operator value.  </bullet_item><para/>
        ///     <bullet_item>Combine using—Set this value if you have multiple attributes to add. You can combine them using an And or an Or condition.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The condition barriers Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The condition barriers Type value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Specific Value—Filter by a specific value.  </bullet_item><para/>
        ///     <bullet_item>Network Attribute—Filter by a network attribute.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>根据与网络属性的比较或检查类别字符串，对要素设置可穿越性屏障条件。条件屏障使用网络属性、运算符和类型以及属性值。例如，当功能的“设备状态”属性等于特定值“打开”时，停止跟踪。当要素满足此条件时，跟踪将停止。如果要使用多个属性，则可以使用“组合使用”参数来定义“和”或“条件。</para>
        /// <para>条件屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>名称 （Name） - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>类型 - 从名称参数中指定的值中选择特定值或网络属性。</bullet_item><para/>
        ///     <bullet_item>值 - 根据运算符值为输入属性类型提供导致终止的特定值。</bullet_item><para/>
        ///     <bullet_item>组合使用- 如果要添加多个属性，请设置此值。您可以使用 And 或 Or 条件将它们组合在一起。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>条件障碍运算符值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>条件屏障类型值选项如下：
        ///   <bulletList>
        ///     <bullet_item>特定值 （Specific Value） - 按特定值进行过滤。</bullet_item><para/>
        ///     <bullet_item>网络属性 - 按网络属性进行过滤。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Condition Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _condition_barriers { get; set; } = null;


        /// <summary>
        /// <para>Function Barriers</para>
        /// <para><xdoc>
        ///   <para>Sets a traversability barrier on features based on a function. Function barriers can be used to do such things as restrict how far the trace travels from the starting point, or set a maximum value to stop a trace. For example, the length of each line traveled is added to the total distance traveled so far. When the total length traveled reaches the value specified, the trace stops.</para>
        ///   <para>Function barrier components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Function—Choose from a number of calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Attribute—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that, if discovered, will cause the termination.  </bullet_item><para/>
        ///     <bullet_item>Use Local Values—Calculate values in each direction as opposed to an overall global value, for example, a function barrier that is calculating the sum of Shape length in which the trace terminates if the value is greater than or equal to 4. In the global case, after you have traversed two edges with a value of 2, you have already reached a Shape length sum of 4, so the trace stops. If local values are used, the local values along each path change, and the trace continues.
        ///       <bulletList>
        ///         <bullet_item>Checked—Local values will be used.      </bullet_item><para/>
        ///         <bullet_item>Unchecked—Global values will be used. This is the default.      </bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The function barrier Function value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Minimum—The minimum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Maximum—The maximum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Add—The sum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Average—The average of the input values.  </bullet_item><para/>
        ///     <bullet_item>Count—The number of features.  </bullet_item><para/>
        ///     <bullet_item>Subtract—The difference between the input values.
        ///       <para>Subnetwork controllers and loops trace types do not support the subtract function.    </para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>For example, the starting point feature has a value of 20. The next feature has a value of 30. If you use the minimum function, the result is 20, maximum is 30, add is 50, average is 25, count is 2, and subtract is -10.</para>
        ///   <para>The function barrier Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在基于函数的要素上设置可遍历性障碍。功能屏障可用于执行诸如限制跟踪从起点行进的距离或设置停止跟踪的最大值等操作。例如，每条行进线的长度将添加到到目前为止的总行进距离中。当行进的总长度达到指定的值时，迹线将停止。</para>
        /// <para>功能屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>函数 （Function） - 从多个计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>属性 - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>值 - 为输入属性类型提供特定值，如果发现该值将导致终止。</bullet_item><para/>
        /// <bullet_item>使用局部值 （Use Local Values） - 计算每个方向上的值，而不是整体全局值，例如，函数屏障，用于计算形状长度之和，如果该值大于或等于 4，则追踪将在其中终止。在全局情况下，在遍历值为 2 的两条边后，已达到 Shape 长度总和为 4，因此迹线停止。如果使用局部值，则沿每个路径的局部值将更改，并且跟踪将继续。
        ///       <bulletList>
        ///         <bullet_item>选中 - 将使用本地值。</bullet_item><para/>
        ///         <bullet_item>未选中—将使用全局值。这是默认设置。     </bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>功能屏障 函数值选项如下：
        ///   <bulletList>
        ///     <bullet_item>最小值 - 输入值的最小值。</bullet_item><para/>
        ///     <bullet_item>最大值 （Maximum） - 输入值的最大值。</bullet_item><para/>
        ///     <bullet_item>添加 - 输入值的总和。</bullet_item><para/>
        ///     <bullet_item>平均值 - 输入值的平均值。</bullet_item><para/>
        ///     <bullet_item>计数 - 要素数。</bullet_item><para/>
        /// <bullet_item>减法 - 输入值之间的差值。
        ///       <para>子网控制器和环路追踪类型不支持减法函数。</para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>例如，起点要素的值为 20。下一个要素的值为 30。如果使用最小值函数，则结果为 20，最大值为 30，加法为 50，平均值为 25，count 为 2，减法为 -10。</para>
        /// <para>功能障碍运算符值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Function Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _function_barriers { get; set; } = null;


        /// <summary>
        /// <para>Apply Traversability To</para>
        /// <para><xdoc>
        ///   <para>Specifies whether traversability will be applied to junctions, edges, or both. For example, if a condition barrier is defined to stop the trace if Device Status is equal to Open and traversability scope is set to edges only, the trace will not stop—even if it encounters an open device—because Device Status is only applicable to junctions. In other words, this parameter indicates to the trace whether to ignore junctions, edges, or both.</para>
        ///   <bulletList>
        ///     <bullet_item>Both junctions and edges—Traversability will be applied to both junctions and edges. This is the default.</bullet_item><para/>
        ///     <bullet_item>Junctions only—Traversability will be applied to junctions only.</bullet_item><para/>
        ///     <bullet_item>Edges only—Traversability will be applied to edges only.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否将可遍历性应用于交汇点和/或边。例如，如果将条件屏障定义为在“设备状态”等于“打开”且“可遍历性范围”设置为“仅边缘”时停止跟踪，则跟踪不会停止（即使遇到打开的设备），因为“设备状态”仅适用于交汇点。换言之，此参数向迹线指示是忽略交汇点和/或边。</para>
        ///   <bulletList>
        ///     <bullet_item>交汇点和边 - 可穿越性将应用于交汇点和边。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>仅限交汇点—可穿越性将仅应用于交汇点。</bullet_item><para/>
        ///     <bullet_item>仅边—可遍历性将仅应用于边。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Apply Traversability To")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _traversability_scope_value _traversability_scope { get; set; } = _traversability_scope_value._BOTH_JUNCTIONS_AND_EDGES;

        public enum _traversability_scope_value
        {
            /// <summary>
            /// <para>Both junctions and edges</para>
            /// <para>Both junctions and edges—Traversability will be applied to both junctions and edges. This is the default.</para>
            /// <para>交汇点和边 - 可穿越性将应用于交汇点和边。这是默认设置。</para>
            /// </summary>
            [Description("Both junctions and edges")]
            [GPEnumValue("BOTH_JUNCTIONS_AND_EDGES")]
            _BOTH_JUNCTIONS_AND_EDGES,

            /// <summary>
            /// <para>Junctions only</para>
            /// <para>Junctions only—Traversability will be applied to junctions only.</para>
            /// <para>仅限交汇点—可穿越性将仅应用于交汇点。</para>
            /// </summary>
            [Description("Junctions only")]
            [GPEnumValue("JUNCTIONS_ONLY")]
            _JUNCTIONS_ONLY,

            /// <summary>
            /// <para>Edges only</para>
            /// <para>Edges only—Traversability will be applied to edges only.</para>
            /// <para>仅边—可遍历性将仅应用于边。</para>
            /// </summary>
            [Description("Edges only")]
            [GPEnumValue("EDGES_ONLY")]
            _EDGES_ONLY,

        }

        /// <summary>
        /// <para>Filter Barriers</para>
        /// <para><xdoc>
        ///   <para>Specifies when the trace will stop for a specific category or network attribute. For example, stop a trace at features that have a life cycle status attribute that is equal to a certain value. This parameter is used to set a terminator based on a value of a network attribute that is defined in the system. If you're using more than one attribute, you can use the Combine Using option to define an And or an Or condition.</para>
        ///   <para>Filter barrier components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Name—Filter by category or any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Type—Choose a specific value or network attribute from the value that is specified in the Name parameter.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that would cause termination based on the operator value.  </bullet_item><para/>
        ///     <bullet_item>Combine Using—Set this value if you have multiple attributes to add. You can combine them using an And or an Or condition.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The filter barriers Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The filter barriers Type value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Specific Value—Filter by a specific value.  </bullet_item><para/>
        ///     <bullet_item>Network Attribute—Filter by a network attribute.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定特定类别或网络属性的跟踪何时停止。例如，在生命周期状态属性等于特定值的要素处停止追踪。此参数用于根据系统中定义的网络属性的值设置终结符。如果要使用多个属性，则可以使用“组合使用”选项来定义“和”或“条件。</para>
        /// <para>过滤屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>名称 - 按类别或系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>类型 - 从名称参数中指定的值中选择特定值或网络属性。</bullet_item><para/>
        ///     <bullet_item>值 - 根据运算符值为输入属性类型提供导致终止的特定值。</bullet_item><para/>
        ///     <bullet_item>合并方式 （Combine Using） - 如果要添加多个属性，请设置此值。您可以使用 And 或 Or 条件将它们组合在一起。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>筛选器屏障运算符值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>筛选屏障类型值选项如下：
        ///   <bulletList>
        ///     <bullet_item>特定值 （Specific Value） - 按特定值进行过滤。</bullet_item><para/>
        ///     <bullet_item>网络属性 - 按网络属性进行过滤。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Filter Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _filter_barriers { get; set; } = null;


        /// <summary>
        /// <para>Filter Function Barriers</para>
        /// <para><xdoc>
        ///   <para>Filters the results of the trace for a specific category.</para>
        ///   <para>Filter function barriers components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Function—Choose from a number of calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Attribute—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that, if discovered, will cause the termination.  </bullet_item><para/>
        ///     <bullet_item>Use Local Values—Calculate values in each direction as opposed to an overall global value. For example, a function barrier that is calculating the sum of shape length in which the trace terminates if the value is greater than or equal to 4. In the global case, after you have traversed two edges with a value of 2, you will have already reached a shape length sum of 4, so the trace stops. If local values are used, the local values along each path change, or the trace continues.
        ///       <bulletList>
        ///         <bullet_item>Checked—Local values will be used.      </bullet_item><para/>
        ///         <bullet_item>Unchecked—Global values will be used. This is the default.      </bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The filter function barriers Function value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Minimum—The minimum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Maximum—The maximum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Add—The sum of the values.  </bullet_item><para/>
        ///     <bullet_item>Average—The average of the input values.  </bullet_item><para/>
        ///     <bullet_item>Count—The number of features.  </bullet_item><para/>
        ///     <bullet_item>Subtract—The difference between the values. Subnetwork controllers and loops trace types do not support the subtract function.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>For example, a starting point feature has a value of 20. The next feature has a value of 30. If you are using the Minimum function, the result is 20. Maximum is 30, Add is 50, Average is 25, Count is 2, and Subtract is -10.</para>
        ///   <para>The filter function barriers Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>筛选特定类别的跟踪结果。</para>
        /// <para>滤波功能屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>函数 （Function） - 从多个计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>属性 - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>值 - 为输入属性类型提供特定值，如果发现该值将导致终止。</bullet_item><para/>
        /// <bullet_item>使用局部值 - 计算每个方向的值，而不是整体全局值。例如，一个函数屏障，用于计算当值大于或等于 4 时，跟踪终止的形状长度之和。在全局情况下，在遍历值为 2 的两条边后，形状长度总和将达到 4，因此迹线将停止。如果使用局部值，则沿每个路径的局部值将更改，或者跟踪将继续。
        ///       <bulletList>
        ///         <bullet_item>选中 - 将使用本地值。</bullet_item><para/>
        ///         <bullet_item>未选中—将使用全局值。这是默认设置。     </bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>过滤器功能障碍功能值选项如下：
        ///   <bulletList>
        ///     <bullet_item>最小值 - 输入值的最小值。</bullet_item><para/>
        ///     <bullet_item>最大值 （Maximum） - 输入值的最大值。</bullet_item><para/>
        ///     <bullet_item>添加 - 值的总和。</bullet_item><para/>
        ///     <bullet_item>平均值 - 输入值的平均值。</bullet_item><para/>
        ///     <bullet_item>计数 - 要素数。</bullet_item><para/>
        ///     <bullet_item>减法 - 值之间的差值。子网控制器和环路追踪类型不支持减法函数。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>例如，起点要素的值为 20。下一个要素的值为 30。如果使用最小值函数，则结果为 20。最大值为 30，加法为 50，平均值为 25，计数为 2，减法为 -10。</para>
        /// <para>过滤器功能障碍运算符值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Filter Function Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _filter_function_barriers { get; set; } = null;


        /// <summary>
        /// <para>Apply Filter To</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the filter for a specific category will be applied to junctions, edges, or both. For example, if a filter barrier is defined to stop the trace if Device Status is equal to Open and traversability scope is set to edges only, the trace will not stop—even if the trace encounters an open device—because Device Status is only applicable to junctions. In other words, this parameter indicates to the trace whether to ignore junctions, edges, or both.
        ///   <bulletList>
        ///     <bullet_item>Both junctions and edges—The filter will be applied to both junctions and edges. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Junctions only—The filter will be applied to junctions only.  </bullet_item><para/>
        ///     <bullet_item>Edges only—The filter will be applied to edges only.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是将特定类别的过滤器应用于交汇点和/或边。例如，如果将筛选器屏障定义为在“设备状态”等于“打开”且“可遍历性范围”设置为“仅边缘”时停止跟踪，则即使跟踪遇到打开的设备，跟踪也不会停止，因为“设备状态”仅适用于交汇点。换言之，此参数向迹线指示是忽略交汇点和/或边。
        ///   <bulletList>
        ///     <bullet_item>交汇点和边 - 过滤器将同时应用于交汇点和边。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>仅限交汇点 - 过滤器将仅应用于交汇点。</bullet_item><para/>
        ///     <bullet_item>仅边 - 过滤器将仅应用于边。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Apply Filter To")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _filter_scope_value _filter_scope { get; set; } = _filter_scope_value._BOTH_JUNCTIONS_AND_EDGES;

        public enum _filter_scope_value
        {
            /// <summary>
            /// <para>BOTH_JUNCTIONS_AND_EDGES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("BOTH_JUNCTIONS_AND_EDGES")]
            [GPEnumValue("BOTH_JUNCTIONS_AND_EDGES")]
            _BOTH_JUNCTIONS_AND_EDGES,

            /// <summary>
            /// <para>JUNCTIONS_ONLY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("JUNCTIONS_ONLY")]
            [GPEnumValue("JUNCTIONS_ONLY")]
            _JUNCTIONS_ONLY,

            /// <summary>
            /// <para>EDGES_ONLY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EDGES_ONLY")]
            [GPEnumValue("EDGES_ONLY")]
            _EDGES_ONLY,

        }

        /// <summary>
        /// <para>Filter by bitset network attribute</para>
        /// <para>The name of the network attribute that will be used to filter by bitset. This parameter is only applicable to upstream, downstream, and loops trace types. This parameter can be used to add special logic during a trace so the trace more closely reflects real-world scenarios. For example, for a loops trace, the Phases current network attribute can determine if the loop is a true electrical loop (the same phase is energized all around the loop, that is, A) and return only real electrical loops for the trace results. An example for an upstream trace is when tracing an electric distribution network, specify a Phases current network attribute, and the trace results will only include valid paths that are specified in the network attribute, not all paths.</para>
        /// <para>将用于按位集进行筛选的网络属性的名称。该参数仅适用于上游、下游和循环跟踪类型。此参数可用于在跟踪期间添加特殊逻辑，以便跟踪更接近地反映真实场景。例如，对于环路跟踪，相位电流网络属性可以确定环路是否为真正的电气环路（同一相位在环路周围通电，即 A），并仅返回跟踪结果的真实电气环路。上游跟踪的一个示例是，在跟踪配电网络时，指定 Phases 当前网络属性，跟踪结果将仅包括网络属性中指定的有效路径，而不是所有路径。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Filter by bitset network attribute")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _filter_bitset_network_attribute_name { get; set; } = null;


        /// <summary>
        /// <para>Filter by nearest</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the k-nearest neighbors algorithm will be used to return a number of features of a certain type within a given distance. When this parameter is used, you can specify a count and a cost as well as a collection of categories, an asset type, or both.
        ///   <bulletList>
        ///     <bullet_item>Checked—The k-nearest neighbors algorithm will be used to return a number of features as specified in the Count, Cost Network Attribute, Nearest Categories, or Nearest Asset Groups/Types parameter.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The k-nearest neighbors algorithm will not be used to filter results. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否使用 k 最近邻算法返回给定距离内特定类型的多个要素。使用此参数时，您可以指定盘点和成本，以及类别集合和/或资产类型。
        ///   <bulletList>
        ///     <bullet_item>选中—k-最近邻算法将用于返回在计数、成本网络属性、最近类别或最近资产组/类型参数中指定的多个要素。</bullet_item><para/>
        ///     <bullet_item>未选中—k最近邻算法将不用于过滤结果。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Filter by nearest")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _filter_nearest_value _filter_nearest { get; set; } = _filter_nearest_value._false;

        public enum _filter_nearest_value
        {
            /// <summary>
            /// <para>FILTER_BY_NEAREST</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("FILTER_BY_NEAREST")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_FILTER</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_FILTER")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Count</para>
        /// <para>The number of features to be returned when Filter by nearest is checked.</para>
        /// <para>选中按最近点过滤时要返回的要素数。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Count")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long? _nearest_count { get; set; } = null;


        /// <summary>
        /// <para>Cost Network Attribute</para>
        /// <para>The numeric network attribute that will be used to calculate nearness, cost, or distance when Filter by nearest is checked—for example, shape length.</para>
        /// <para>选中“按最近点过滤”时将用于计算邻近度、成本或距离的数字网络属性，例如形状长度。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Cost Network Attribute")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _nearest_cost_network_attribute { get; set; } = null;


        /// <summary>
        /// <para>Nearest Categories</para>
        /// <para>The category or categories that will be returned when Filter by nearest is checked—for example, Protective.</para>
        /// <para>选中“按最近点筛选”时将返回的一个或多个类别，例如，保护性。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Nearest Categories")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _nearest_categories { get; set; } = null;


        /// <summary>
        /// <para>Nearest Asset Groups/Types</para>
        /// <para>The asset groups and asset types that will be returned when Filter by nearest is checked—for example, ElectricDistributionDevice/Transformer/Step Down.</para>
        /// <para>选中“按最近点筛选”时将返回的资产组和资产类型，例如，ElectricDistributionDevice/Transformer/Step Down。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Nearest Asset Groups/Types")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _nearest_assets { get; set; } = null;


        /// <summary>
        /// <para>Functions</para>
        /// <para><xdoc>
        ///   <para>The calculation function or functions that will be applied to the trace results.</para>
        ///   <para>Functions components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Function—Choose from a number of calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Attribute—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Filter Name—Filter the function results by attribute name.  </bullet_item><para/>
        ///     <bullet_item>Filter Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Filter Type—Choose from a number of filter types.  </bullet_item><para/>
        ///     <bullet_item>Filter Value—Provide a specific value for the input filter attribute.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The functions Function value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Minimum—The minimum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Maximum—The maximum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Add—The sum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Average—The average of the input values.  </bullet_item><para/>
        ///     <bullet_item>Count—The number of features.  </bullet_item><para/>
        ///     <bullet_item>Subtract—The difference between the input values.
        ///       <para>Subnetwork controllers and loops trace types do not support the subtract function.    </para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>For example, a starting point feature has a value of 20. The next feature has a value of 30. If you're using the Minimum function, the result is 20, Maximum is 30, Add is 50, Average is 25, Count is 2, and Subtract is -10.</para>
        ///   <para>The functions Filter Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The functions Filter Type value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Specific Value—Filter by a specific value.  </bullet_item><para/>
        ///     <bullet_item>Network Attribute—Filter by a network attribute.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将应用于跟踪结果的一个或多个计算函数。</para>
        /// <para>函数组件如下：
        ///   <bulletList>
        ///     <bullet_item>函数 （Function） - 从多个计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>属性 - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>过滤器名称 （Filter Name） - 按属性名称过滤函数结果。</bullet_item><para/>
        ///     <bullet_item>过滤器运算符 （Filter Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>过滤器类型 （Filter Type） - 从多种过滤器类型中进行选择。</bullet_item><para/>
        ///     <bullet_item>过滤器值 （Filter Value） - 为输入过滤器属性提供特定值。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>函数 Function 值选项如下：
        ///   <bulletList>
        ///     <bullet_item>最小值 - 输入值的最小值。</bullet_item><para/>
        ///     <bullet_item>最大值 （Maximum） - 输入值的最大值。</bullet_item><para/>
        ///     <bullet_item>添加 - 输入值的总和。</bullet_item><para/>
        ///     <bullet_item>平均值 - 输入值的平均值。</bullet_item><para/>
        ///     <bullet_item>计数 - 要素数。</bullet_item><para/>
        /// <bullet_item>减法 - 输入值之间的差值。
        ///       <para>子网控制器和环路追踪类型不支持减法函数。</para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>例如，起点要素的值为 20。下一个要素的值为 30。如果使用最小值函数，则结果为 20、最大值为 30、添加值为 50、平均值为 25、计数为 2、减法为 -10。</para>
        /// <para>函数 Filter Operator 值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>函数 Filter Type 值选项如下：
        ///   <bulletList>
        ///     <bullet_item>特定值 （Specific Value） - 按特定值进行过滤。</bullet_item><para/>
        ///     <bullet_item>网络属性 - 按网络属性进行过滤。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Functions")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _functions { get; set; } = null;


        /// <summary>
        /// <para>Propagators</para>
        /// <para><xdoc>
        ///   <para>Specifies the network attributes to propagate as well as how that propagation will occur during a trace. Propagated class attributes denote the key values on subnetwork controllers that are disseminated to the rest of the features in the subnetwork. For example, in an electric distribution model, you can propagate the phase value.</para>
        ///   <para>Propagators components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Attribute—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Substitution Attribute—Use a substituted value instead of bitset network attribute values. Substitutions are encoded based on the number of bits in the network attribute being propagated. A substitution is a mapping of each bit in phase to another bit. For example, for Phase AC, one substitution could map bit A to B, and bit C to null. In this example, the substitution for 1010 (Phase AC) is 0000-0010-0000-0000 (512). The substitution captures the mapping so you know that Phase A was mapped to B and Phase C was mapped to null, and not the other way around (that is, Phase A was not mapped to null and Phase C was not mapped to B).  </bullet_item><para/>
        ///     <bullet_item>Function—Choose from a number of calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that would cause termination based on the operator value.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The propagators function value options are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>PROPAGATED_BITWISE_AND—Compare the values from one feature to the next.</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MIN—Get the minimum value.</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MAX—Get the maximum value.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The propagators operator value options are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO—The attribute is equal to the value.</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL—The attribute is not equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN—The attribute is greater than the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO—The attribute is greater than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN—The attribute is less than the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO—The attribute is less than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_THE_VALUES—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_ANY—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only available via Python.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要传播的网络属性以及该传播在追踪期间的发生方式。传播的类属性表示子网控制器上的键值，这些键值将传播到子网中的其余要素。例如，在配电模型中，可以传播相位值。</para>
        /// <para>传播器组件如下：
        ///   <bulletList>
        ///     <bullet_item>属性 - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>替换属性 - 使用替换值而不是位集网络属性值。替换是根据正在传播的网络属性中的位数进行编码的。替换是相位中每个位到另一个位的映射。例如，对于相位 AC，一个替换可以将位 A 映射到 B，将位 C 映射到 null。在此示例中，1010（相位 AC）的替换为 0000-0010-0000-0000 （512）。替换捕获映射，因此您知道阶段 A 映射到 B，阶段 C 映射到 null，而不是相反（即阶段 A 未映射到 null，阶段 C 未映射到 B）。 </bullet_item><para/>
        ///     <bullet_item>函数 （Function） - 从多个计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>值 - 根据运算符值为输入属性类型提供导致终止的特定值。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>传播器函数值选项如下：</para>
        ///   <bulletList>
        ///     <bullet_item>PROPAGATED_BITWISE_AND - 将一个要素的值与下一个要素的值进行比较。</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MIN - 获取最小值。</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MAX - 获取最大值。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>传播器运算符值选项如下：</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO - 属性等于值。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN - 属性大于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO - 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN - 属性小于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO - 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_THE_VALUES - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY - 按位 AND 操作，其中属性中至少存在值中的一位 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_ANY - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>此参数仅通过 Python 提供。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Propagators")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _propagators { get; set; } = null;


        /// <summary>
        /// <para>Output Asset Types</para>
        /// <para>Filters the output asset types to be included in the results—for example, only return overhead transformers.</para>
        /// <para>筛选要包含在结果中的输出资产类型，例如，仅返回架空变压器。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Asset Types")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _output_assettypes { get; set; } = null;


        /// <summary>
        /// <para>Output Conditions</para>
        /// <para><xdoc>
        ///   <para>The types of features that will be returned based on a network attribute or category. For example, in a trace configured to filter out everything but Tap features, any traced features that do not have the Tap category assigned to them will not be included in the results. Any traced features that do will be returned in the result selection set.</para>
        ///   <para>Output conditions components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Name—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Type—Choose a specific value or network attribute from the value that is specified in the Name parameter.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that would cause termination based on the operator value.  </bullet_item><para/>
        ///     <bullet_item>Combine using—Set this value if you have multiple attributes to add. You can combine them using an And or an Or condition.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The output conditions Type value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Specific Value—Filter by a specific value.  </bullet_item><para/>
        ///     <bullet_item>Network Attribute—Filter by a network attribute.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The output conditionsOperator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将基于网络属性或类别返回的要素类型。例如，在配置为过滤除“点击”要素之外的所有内容的追踪中，任何未分配“点击”类别的追踪要素都不会包含在结果中。任何这样做的追踪要素都将在结果选择集中返回。</para>
        /// <para>输出条件组件如下：
        ///   <bulletList>
        ///     <bullet_item>名称 （Name） - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>类型 - 从名称参数中指定的值中选择特定值或网络属性。</bullet_item><para/>
        ///     <bullet_item>值 - 根据运算符值为输入属性类型提供导致终止的特定值。</bullet_item><para/>
        ///     <bullet_item>组合使用- 如果要添加多个属性，请设置此值。您可以使用 And 或 Or 条件将它们组合在一起。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>输出条件类型值选项如下：
        ///   <bulletList>
        ///     <bullet_item>特定值 （Specific Value） - 按特定值进行过滤。</bullet_item><para/>
        ///     <bullet_item>网络属性 - 按网络属性进行过滤。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>输出条件运算符值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Conditions")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _output_conditions { get; set; } = null;


        /// <summary>
        /// <para>Output Utility Network</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Utility Network")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_utility_network { get; set; }


        /// <summary>
        /// <para>Include Isolated Features</para>
        /// <para><xdoc>
        ///   <para>Specifies whether isolated features will be included in the trace results. This parameter is only used when running an isolation trace.
        ///   <bulletList>
        ///     <bullet_item>Checked—Isolated features will be included in the trace results.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Isolated features will not be included in the trace results. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否将隔离要素包含在追踪结果中。此参数仅在运行隔离跟踪时使用。
        ///   <bulletList>
        ///     <bullet_item>选中 - 隔离要素将包含在追踪结果中。</bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪结果中不会包括隔离要素。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Isolated Features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_isolated_features_value _include_isolated_features { get; set; } = _include_isolated_features_value._false;

        public enum _include_isolated_features_value
        {
            /// <summary>
            /// <para>INCLUDE_ISOLATED_FEATURES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_ISOLATED_FEATURES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_ISOLATED_FEATURES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_ISOLATED_FEATURES")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Ignore Barriers At Starting Points</para>
        /// <para><xdoc>
        ///   <para>Specifies whether dynamic barriers in the trace configuration will be ignored for starting points. This may be useful when performing an upstream protective device trace and using the discovered protective devices (barriers) as starting points to find subsequent upstream protective devices.
        ///   <bulletList>
        ///     <bullet_item>Checked—Barriers at starting points will be ignored in the trace.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Barriers at starting points will not be ignored in the trace. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否忽略跟踪配置中的动态屏障作为起点。在执行上游保护装置跟踪并使用发现的保护装置（屏障）作为起点查找后续上游保护装置时，这可能很有用。
        ///   <bulletList>
        ///     <bullet_item>选中 - 起点处的障碍将在追踪中被忽略。</bullet_item><para/>
        ///     <bullet_item>未选中 - 起点处的障碍不会在追踪中被忽略。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Ignore Barriers At Starting Points")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _ignore_barriers_at_starting_points_value _ignore_barriers_at_starting_points { get; set; } = _ignore_barriers_at_starting_points_value._false;

        public enum _ignore_barriers_at_starting_points_value
        {
            /// <summary>
            /// <para>IGNORE_BARRIERS_AT_STARTING_POINTS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("IGNORE_BARRIERS_AT_STARTING_POINTS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_IGNORE_BARRIERS_AT_STARTING_POINTS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_IGNORE_BARRIERS_AT_STARTING_POINTS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Include up to First Spatial Container</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the containers returned will be limited to only those encountered up to, and including, the first spatial container for each network element in the trace results. If no spatial containers are encountered but nonspatial containers are present for a given network element, all nonspatial containers will be included in the results. This parameter is only active when Include Containers is checked.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Only containers encountered up to, and including, the first spatial container will be returned in the results when nested containment associations are encountered along the trace path. If no spatial containers exist, all nonspatial containers will be included in the results for a given network element.</bullet_item><para/>
        ///     <bullet_item>Unchecked—All containers will be returned in the results. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定返回的容器是否仅限于跟踪结果中每个网络元素遇到的第一个空间容器（包括第一个空间容器）。如果未遇到空间容器，但给定网络元素存在非空间容器，则所有非空间容器都将包含在结果中。仅当选中“包括容器”时，此参数才处于活动状态。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 当沿追踪路径遇到嵌套的包含关联时，只会在结果中返回遇到的第一个空间容器（包括第一个空间容器）。如果不存在空间容器，则所有非空间容器都将包含在给定网络元素的结果中。</bullet_item><para/>
        ///     <bullet_item>未选中 - 所有容器都将在结果中返回。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include up to First Spatial Container")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_up_to_first_spatial_container_value _include_up_to_first_spatial_container { get; set; } = _include_up_to_first_spatial_container_value._false;

        public enum _include_up_to_first_spatial_container_value
        {
            /// <summary>
            /// <para>INCLUDE_UP_TO_FIRST_SPATIAL_CONTAINER</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_UP_TO_FIRST_SPATIAL_CONTAINER")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_INCLUDE_UP_TO_FIRST_SPATIAL_CONTAINER</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_INCLUDE_UP_TO_FIRST_SPATIAL_CONTAINER")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Result Types</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of results that will be returned by the trace.</para>
        ///   <bulletList>
        ///     <bullet_item>Selection— The trace results will be returned as a selection set on the appropriate network features. This is the default.</bullet_item><para/>
        ///     <bullet_item>Aggregated Geometry— The trace results will be aggregated by geometry type and stored in multipart feature classes displayed in layers in the active map.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定跟踪将返回的结果的类型。</para>
        ///   <bulletList>
        ///     <bullet_item>选择- 追踪结果将作为相应网络要素上的选择集返回。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>聚合几何 - 追踪结果将按几何类型聚合，并存储在活动地图图层中显示的多部分要素类中。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Result Types")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _result_types { get; set; } = null;


        /// <summary>
        /// <para>Allow Indeterminate Flow</para>
        /// <para><xdoc>
        ///   <para>Specifies whether features with indeterminate flow will be traced. This parameter is only honored when running an upstream or downstream trace.
        ///   <bulletList>
        ///     <bullet_item>Checked—Features with indeterminate flow will be traced. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Features with indeterminate flow will stop traversability and will not be traced.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否追踪具有不确定流的特征。仅当运行上游或下游跟踪时，才遵循此参数。
        ///   <bulletList>
        ///     <bullet_item>选中 - 将追踪具有不确定流的要素。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 具有不确定流的要素将停止可穿越性，并且不会被追踪。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Allow Indeterminate Flow")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _allow_indeterminate_flow_value _allow_indeterminate_flow { get; set; } = _allow_indeterminate_flow_value._true;

        public enum _allow_indeterminate_flow_value
        {
            /// <summary>
            /// <para>TRACE_INDETERMINATE_FLOW</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TRACE_INDETERMINATE_FLOW")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>IGNORE_INDETERMINATE_FLOW</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("IGNORE_INDETERMINATE_FLOW")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Validate Locatability</para>
        /// <para><xdoc>
        ///   <para>Specifies whether an error will be returned if nonspatial junction or edge objects are encountered without an associated container or structure in the association hierarchy for the traversed features. This option ensures that nonspatial objects returned by a trace are associated with spatial features.
        ///   <bulletList>
        ///     <bullet_item>Checked—The trace will return an error if nonspatial junction or edge objects are encountered without an associated container or structure in the association hierarchy for the traversed features.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The trace will not perform a check for unlocatable objects and will return results regardless of whether unlocatable objects are present in the association hierarchy of the traversed features. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定如果遇到非空间交汇点或边对象，而在遍历要素的关联层次结构中没有关联的容器或结构，则是否返回错误。此选项可确保追踪返回的非空间对象与空间要素相关联。
        ///   <bulletList>
        ///     <bullet_item>选中 - 如果在穿越要素的关联层次结构中遇到非空间交汇点或边对象而没有关联的容器或结构，则追踪将返回错误。</bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪不会对不可定位对象执行检查，并且无论遍历要素的关联层次结构中是否存在不可定位对象，追踪都将返回结果。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Validate Locatability")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _validate_locatability_value _validate_locatability { get; set; } = _validate_locatability_value._false;

        public enum _validate_locatability_value
        {
            /// <summary>
            /// <para>VALIDATE_LOCATABILITY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("VALIDATE_LOCATABILITY")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_VALIDATE_LOCATABILITY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_VALIDATE_LOCATABILITY")]
            [GPEnumValue("false")]
            _false,

        }

        public AddTraceConfiguration SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}